﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CuaHangMayTinh.Utilities;
using CuaHangMayTinh.DataProvider;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.DataAccessLayer;
using System.Data;

namespace CuaHangMayTinh.BusinessLogicLayer
{
    /// <summary>
    /// 
    /// </summary>
    public class NhaCungCapManager
    {
        /// <summary>
        /// Khởi tạo đối tượng NhaCungCapDA
        /// </summary>
        private static NhaCungCapDA adapter = null;

        static NhaCungCapManager()
        {
            if (adapter == null)
                adapter = new NhaCungCapDA();
        }

        /// <summary>
        /// Hàm thêm 1 nhà cung cấp mới
        /// </summary>
        /// <param name="entity">NhaCungCapEntity muốn thêm mới</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> #0: thêm được</returns>
        public static int Insert(NhaCungCapEntity entity)
        {
            try
            {
                return adapter.Insert(entity);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm thêm 1 nhà cung cấp mới, trả về ID nếu thêm thành công
        /// </summary>
        /// <param name="entity">1 NhaCungCapEntity muốn thêm mới</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> >0: ID Nha Cung Cap</returns>
        public static int InsertGetID(NhaCungCapEntity entity)
        {
            try
            {
                return adapter.InsertGetID(entity);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm thêm 1 nhà cung cấp mới, trả về thông báo lỗi nếu có
        /// </summary>
        /// <param name="entity">NhaCungCapEntity muốn thêm mới</param>
        /// <param name="errormessage">Chuỗi thông báo lỗi</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> #0: thêm được</returns>
        public static int Insert(NhaCungCapEntity entity, ref string errormessage)
        {
            try
            {
                return adapter.Insert(entity);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm thêm 1 nhà cung cấp mới, trả về ID nếu thêm thành công, trả về thông báo lỗi nếu có
        /// </summary>
        /// <param name="entity">1 NhaCungCapEntity muốn thêm mới</param>
        /// <param name="errormessage">Chuỗi thông báo lỗi</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> >0: ID Nha Cung Cap</returns>
        public static int InsertGetID(NhaCungCapEntity entity, ref string errormessage)
        {
            try
            {
                return adapter.InsertGetID(entity);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm cập nhật 1 nhà cung cấp
        /// </summary>
        /// <param name="entity">NhaCungCapEntity muốn thêm cập nhật</param>
        /// <returns>false: Không cập nhật được</returns>
        /// <returns>true: cập nhật được</returns>
        public static bool UpDate(NhaCungCapEntity entity)
        {
            try
            {
                return adapter.UpDate(entity);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm cập nhật tình trạng của nhà cung cấp
        /// </summary>
        /// <param name="mancc">ID nhà cung cấp</param>
        /// <param name="tinhtrang">Tình trạng muốn cập nhật</param>
        /// <returns>true: Thành công</returns>
        /// <returns>false: Thất bại</returns>
        public static bool Update_TinhTrang(int mancc, bool tinhtrang)
        {
            try
            {
                return adapter.Update_TinhTrang(mancc, tinhtrang);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm cập nhật 1 nhà cung cấp, , trả về thông báo lỗi nếu có
        /// </summary>
        /// <param name="entity">NhaCungCapEntity muốn thêm cập nhật</param>
        /// <param name="errormessage">Chuỗi thông báo lỗi</param>
        /// <returns>false: Không cập nhật được</returns>
        /// <returns>true: cập nhật được</returns>
        public static bool UpDate(NhaCungCapEntity entity, ref string errormessage)
        {
            try
            {
                return adapter.UpDate(entity);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm cập nhật tình trạng của nhà cung cấp
        /// </summary>
        /// <param name="mancc">ID nhà cung cấp</param>
        /// <param name="tinhtrang">Tình trạng muốn cập nhật</param>
        /// <param name="errormessage">Chuỗi thông báo lỗi</param>
        /// <returns>false: Không cập nhật được</returns>
        /// <returns>true: cập nhật được</returns>
        public static bool Update_TinhTrang(int mancc, bool tinhtrang, ref string errormessage)
        {
            try
            {
                return adapter.Update_TinhTrang(mancc, tinhtrang);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm lấy tất cả thông tin về nhà cung cấp
        /// </summary>
        /// <returns>DataTable</returns>
        public static DataTable Find_All()
        {
            try
            {
                return adapter.Find_All();
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm lấy tất cả thông tin về nhà cung cấp
        /// </summary>
        /// <param name="errormessage">Chuỗi thông báo lỗi</param>
        /// <returns>DataTable</returns>
        public static DataTable Find_All(ref string errormessage)
        {
            try
            {
                return adapter.Find_All();
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm tìm nhà cung cấp theo tên của nhà cung cấp
        /// </summary>
        /// <param name="ten">Tên nhà cung cấp muốn tìm</param>
        /// <returns>DataTable</returns>
        public static DataTable Find_Ten(string ten)
        {
            try
            {
                return adapter.Find_Ten(ten);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ten"></param>
        /// <param name="errormessage"></param>
        /// <returns></returns>
        public static DataTable Find_Ten(string ten, ref string errormessage)
        {
            try
            {
                return adapter.Find_Ten(ten);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm tìm nhà cung cấp theo mã số thuế của nhà cung cấp
        /// </summary>
        /// <param name="maSoThue">mã số thuế của nhà cung cấp</param>
        /// <returns></returns>
        public static DataTable Find_MaSoThue(string maSoThue)
        {
            try
            {
                return adapter.Find_MaSoThue(maSoThue);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="maSoThue"></param>
        /// <param name="errormessage"></param>
        /// <returns></returns>
        public static DataTable Find_MaSoThue(string maSoThue, ref string errormessage)
        {
            try
            {
                return adapter.Find_MaSoThue(maSoThue);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm tìm nhà cung cấp theo tên của nhà cung cấp
        /// </summary>
        /// <param name="id">ID nhà cung cấp</param>
        /// <returns>DataTable</returns>
        public static DataTable Find_ID(int id)
        {
            try
            {
                return adapter.Find_ID(id);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="errormessage"></param>
        /// <returns></returns>
        public static DataTable Find_ID(int id, ref string errormessage)
        {
            try
            {
                return adapter.Find_ID(id);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm Lất ID của Nhà Cung cấp theo tên
        /// </summary>
        /// <param name="tenncc">Tên của nhà cung cấp muốn GetID</param>
        /// <returns>ID của nhà cung cấp</returns>
        public static int GetID(string tenncc)
        {
            try
            {
                return adapter.GetID(tenncc);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tenncc"></param>
        /// <param name="errormessage"></param>
        /// <returns></returns>
        public static int GetID(string tenncc, ref string errormessage)
        {
            try
            {
                return adapter.GetID(tenncc);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return 0;
            }
        }


        /// <summary>
        /// Hàm xóa nhà cung cấp
        /// </summary>
        /// <param name="ID">ID Nhà cung cấp cần xóa</param>
        /// <returns></returns>
        public static bool Delete(int ID)
        {
            try
            {
                return adapter.Delete(ID);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="errormessage"></param>
        /// <returns></returns>
        public static bool Delete(int ID, ref string errormessage)
        {
            try
            {
                return adapter.Delete(ID);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return false;
            }
        }


        /// <summary>
        /// Hàm chuyển DataTable thành 1 List NhaCungCapEntity
        /// </summary>
        /// <param name="dt">DataTable chứa thông tin về nhà cung cấp</param>
        /// <returns>List NhaCungCapEntity</returns>
        public static List<NhaCungCapEntity> ConvertToList(DataTable dt)
        {
            try
            {
                return adapter.ConvertToList(dt);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }
    }
}
